Always trap errors around calls to XSetInputFocus since we have no way of
authorOwen Taylor <otaylor@redhat.com>
Wed, 2 May 2001 21:31:52 +0000 (21:31 +0000)
committerOwen Taylor <otaylor@src.gnome.org>
Wed, 2 May 2001 21:31:52 +0000 (21:31 +0000)
Wed May  2 17:26:22 2001  Owen Taylor  <otaylor@redhat.com>

* gdk/x11/gdkevents-x11.c gdk/x11/gdkwindow-x11.c: Always
trap errors around calls to XSetInputFocus since we have
no way of knowing reliably whether we are viewable or
not. (#53947)

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gdk/x11/gdkevents-x11.c
gdk/x11/gdkwindow-x11.c

index 5d1470078388b203e341cc023815e24a54f4f0f2..d6a044fc0d172f7fb289a0fe538f00e65d246bd3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Wed May  2 17:26:22 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/x11/gdkevents-x11.c gdk/x11/gdkwindow-x11.c: Always
+       trap errors around calls to XSetInputFocus since we have
+       no way of knowing reliably whether we are viewable or
+       not. (#53947)
+
 Tue May  1 09:21:23 2001  Jonathan Blandford  <jrb@webwynk.net>
 
        * gtk/gtktreeview.c (gtk_tree_view_button_release_drag_column):
index 5d1470078388b203e341cc023815e24a54f4f0f2..d6a044fc0d172f7fb289a0fe538f00e65d246bd3 100644 (file)
@@ -1,3 +1,10 @@
+Wed May  2 17:26:22 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/x11/gdkevents-x11.c gdk/x11/gdkwindow-x11.c: Always
+       trap errors around calls to XSetInputFocus since we have
+       no way of knowing reliably whether we are viewable or
+       not. (#53947)
+
 Tue May  1 09:21:23 2001  Jonathan Blandford  <jrb@webwynk.net>
 
        * gtk/gtktreeview.c (gtk_tree_view_button_release_drag_column):
index 5d1470078388b203e341cc023815e24a54f4f0f2..d6a044fc0d172f7fb289a0fe538f00e65d246bd3 100644 (file)
@@ -1,3 +1,10 @@
+Wed May  2 17:26:22 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/x11/gdkevents-x11.c gdk/x11/gdkwindow-x11.c: Always
+       trap errors around calls to XSetInputFocus since we have
+       no way of knowing reliably whether we are viewable or
+       not. (#53947)
+
 Tue May  1 09:21:23 2001  Jonathan Blandford  <jrb@webwynk.net>
 
        * gtk/gtktreeview.c (gtk_tree_view_button_release_drag_column):
index 5d1470078388b203e341cc023815e24a54f4f0f2..d6a044fc0d172f7fb289a0fe538f00e65d246bd3 100644 (file)
@@ -1,3 +1,10 @@
+Wed May  2 17:26:22 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/x11/gdkevents-x11.c gdk/x11/gdkwindow-x11.c: Always
+       trap errors around calls to XSetInputFocus since we have
+       no way of knowing reliably whether we are viewable or
+       not. (#53947)
+
 Tue May  1 09:21:23 2001  Jonathan Blandford  <jrb@webwynk.net>
 
        * gtk/gtktreeview.c (gtk_tree_view_button_release_drag_column):
index 5d1470078388b203e341cc023815e24a54f4f0f2..d6a044fc0d172f7fb289a0fe538f00e65d246bd3 100644 (file)
@@ -1,3 +1,10 @@
+Wed May  2 17:26:22 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/x11/gdkevents-x11.c gdk/x11/gdkwindow-x11.c: Always
+       trap errors around calls to XSetInputFocus since we have
+       no way of knowing reliably whether we are viewable or
+       not. (#53947)
+
 Tue May  1 09:21:23 2001  Jonathan Blandford  <jrb@webwynk.net>
 
        * gtk/gtktreeview.c (gtk_tree_view_button_release_drag_column):
index 5d1470078388b203e341cc023815e24a54f4f0f2..d6a044fc0d172f7fb289a0fe538f00e65d246bd3 100644 (file)
@@ -1,3 +1,10 @@
+Wed May  2 17:26:22 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/x11/gdkevents-x11.c gdk/x11/gdkwindow-x11.c: Always
+       trap errors around calls to XSetInputFocus since we have
+       no way of knowing reliably whether we are viewable or
+       not. (#53947)
+
 Tue May  1 09:21:23 2001  Jonathan Blandford  <jrb@webwynk.net>
 
        * gtk/gtktreeview.c (gtk_tree_view_button_release_drag_column):
index 5d1470078388b203e341cc023815e24a54f4f0f2..d6a044fc0d172f7fb289a0fe538f00e65d246bd3 100644 (file)
@@ -1,3 +1,10 @@
+Wed May  2 17:26:22 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/x11/gdkevents-x11.c gdk/x11/gdkwindow-x11.c: Always
+       trap errors around calls to XSetInputFocus since we have
+       no way of knowing reliably whether we are viewable or
+       not. (#53947)
+
 Tue May  1 09:21:23 2001  Jonathan Blandford  <jrb@webwynk.net>
 
        * gtk/gtktreeview.c (gtk_tree_view_button_release_drag_column):
index 8fdb559f00098e59f36d68b662d65eb913329c2e..2655d4278f7bd4caa3483f0f6b01796e0658e40e 100644 (file)
@@ -1487,8 +1487,16 @@ gdk_wm_protocols_filter (GdkXEvent *xev,
       GdkWindow *win = event->any.window;
       Window focus_win = GDK_WINDOW_IMPL_X11(((GdkWindowObject *)win)->impl)->focus_window;
 
-      XSetInputFocus (GDK_WINDOW_XDISPLAY (win), focus_win,
-                     RevertToParent, xevent->xclient.data.l[1]);
+      /* There is no way of knowing reliably whether we are viewable so we need
+       * to trap errors so we don't cause a BadMatch.
+       */
+      gdk_error_trap_push ();
+      XSetInputFocus (GDK_WINDOW_XDISPLAY (win),
+                     focus_win,
+                     RevertToParent,
+                     xevent->xclient.data.l[1]);
+      XSync (GDK_WINDOW_XDISPLAY (win), False);
+      gdk_error_trap_pop ();
     }
   else if ((Atom) xevent->xclient.data.l[0] == gdk_atom_intern ("_NET_WM_PING", FALSE))
     {
index 32aea75cc0318e9de61e88afc5eb81c4a752a225..9cb966b065e98f394d66b67b1e75ba3743c75c43 100644 (file)
@@ -1120,10 +1120,17 @@ gdk_window_focus (GdkWindow *window,
   else
     {
       XRaiseWindow (GDK_WINDOW_XDISPLAY (window), GDK_WINDOW_XID (window));
+
+      /* There is no way of knowing reliably whether we are viewable so we need
+       * to trap errors so we don't cause a BadMatch.
+       */
+      gdk_error_trap_push ();
       XSetInputFocus (GDK_WINDOW_XDISPLAY (window),
                       GDK_WINDOW_XWINDOW (window),
                       RevertToNone,
                       timestamp);
+      XSync (GDK_WINDOW_XDISPLAY (window), False);
+      gdk_error_trap_pop ();
     }
 }